//
//  Person.h
//  08-iOS 9新特性
//
//  Created by LL.F on 16/7/13.
//  Copyright © 2016年 LL.F. All rights reserved.
//

#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN// 加上这个就不报黄色警告了
@interface Person : NSObject
// Nullability 是在编译层次上加了一些改动

// nonnull 声明的属性, 不能为空(getter和setter方法)
//@property (nonnull, nonatomic, copy) NSString *name;// 第一种形式
// __nonnull, 在声明属性的类型后面加__nonnull
@property (nonatomic, copy) NSString *__nonnull name;// 第二种形式

// nullable 声明的属性, 是可以为空(getter和setter方法)
//@property (nullable, nonatomic, copy) NSString *gender;// 第一种形式
// __nullable, 在声明属性的类型后面加 __nullable
@property (nonatomic, copy) NSString *__nullable gender;// 第二种形式

//null_resettable 声明的属性, setter可以为空, getter不可以为空
@property (null_resettable, nonatomic, strong) NSArray *friend;

// NS_ASSUME_NONNULL_BEGIN
// NS_ASSUME_NONNULL_END
// 一般应用于头文件.h 一般将声明包含起来 针对所有属性, 添加nonnull修饰符. 也就是说nullable和null_resettale需要加修饰, 其他都不需要
//不可以像下面number这样做
@property (nonnull, nonatomic, assign) NSInteger *number;

@property (nonatomic, strong) NSDictionary *dictionary;
@end
NS_ASSUME_NONNULL_END












